
/**
 * 数据基础类
 *
 * DrawBase
 * 
 * @class
 * @memberof Nice.DrawBase
 * @author iwangcj
 */
export default class DrawBase {
    constructor() {
        /**id  */
        this.id = '';
        /**typename */
        this.typeName = null;
        this.templateName = null;
        this.userdata = null;
        this.aniConfig = null;
        this.stateNums = null;
        this.componentState = null;
        this.componentType = null;
    }

    // /**
    //  * get/set id attr.
    //  */
    // get id() {
    //     return this.id;
    // }
    // set id(_id) {
    //     this.id = _id;
    // }

    // /**
    //  * get/set typeName attr.
    //  */
    // get typeName() {
    //     return this.typeName;
    // }
    // set typeName(name) {
    //     this.typeName = name;
    // }

    // /**
    //  * get/set templateName attr.
    //  */
    // get templateName() {
    //     return this.templateName;
    // }
    // set templateName(name) {
    //     this.templateName = name;
    // }

    // /**
    //  * get/set userdata attr.
    //  */
    // get userdata() {
    //     return this.userdata;
    // }
    // set userdata(data) {
    //     this.userdata = data;
    // }

    // /**
    //  * get/set aniConfig attr.
    //  */
    // get aniConfig() {
    //     return this.aniConfig;
    // }
    // set aniConfig(data) {
    //     this.aniConfig = data;
    // }

    // /**
    //  * get/set stateNums attr.
    //  */
    // get stateNums() {
    //     return this.stateNums;
    // }
    // set stateNums(num) {
    //     this.stateNums = num;
    // }

    //     /**
    //  * get/set componentState attr.
    //  */
    // get componentState() {
    //     return this.componentState;
    // }
    // set componentState(state) {
    //     this.componentState = state;
    // }

    // /**
    //  * get/set componentType attr.
    //  */
    // get componentType() {
    //     return this.componentType;
    // }
    // set componentType(type) {
    //     this.componentType = type;
    // }


    /**
     * 设置DrawBase实例属性
     * @param {*} key 
     * @param {*} value 
     */
    attrBase(key, value=undefined) {
        const isExistKey = DrawBase.AttrList.indexOf(key) > -1;
        if (undefined == value) {//get
            if (key && isExistKey) {
                return this[key];
            }
            return undefined;
        }
        else { //set
            if (key && isExistKey) {
                this[key] = value;
                return true;
            }
            return false;    
        }
    }

    /**
     * 被子类继承函数
     * @param {*} key 
     * @param {*} value 
     */
    attr(key, value) {
        return this.attrBase(key, value);
    }

}

DrawBase.AttrList = ['id', 'typeName', 'templateName', 'userdata', 'aniConfig', 'stateNums', 'componentState', 'componentType'];